1. Field of the Invention
In general, the present invention relates to a method, system and program product for synchronizing data elements between devices. Specifically, the present invention provides a system for synchronizing data elements between devices without resulting in data element re-transmission.
2. Related Art
As the use of pervasive devices such as laptops, personal digital assistants (PDAs) and mobile telephones has increased, a growing reliance on a client-server model to provide data element synchronization has resulted. For example, a user will often operate a PDA in conjunction with a desktop computer or the like. This allows data such as a calendar or contact list to be maintained on both devices. As the user makes changes to the data on one device, those changes should be synchronized to the other device to ensure continuity.
One common protocol that is used for data element synchronization is the SyncML protocol. SyncML is an Extensible Markup Language (XML) protocol under development as an open standard for the universal synchronization of data between devices, one of the most important building blocks in the development of third generation (3G) wireless. The SyncML Initiative was founded in February of 2000, with a stated goal of developing and promoting an open and portable standard for consistent synchronization of remote data across networks, platforms, and devices. SyncML leverages existing standards such as MIME, the vCard, and the iCalendar, in addition to XML.
In general, there are at least two types of synchronization, slow synchronization and fast/normal synchronization. Under slow synchronization, all data on a first device is transferred to a second device. This type of synchronization is typically used when a previous synchronization failed, time anchors became corrupt, a device is in ambiguous state, etc. For example, if a previous synchronization between a PDA and a desktop failed, all data on the PDA could be transferred to the desktop, which would then attempt to resolve any differences. Due to the large volume of data that could be stored on such devices, a slow synchronization is usually only practiced in error situations.
A second type of synchronization is known as a fast or normal synchronization. This type of synchronization transfers only the data that has changed since the last synchronization. For example, if a user synchronized his PDA to his desktop at 1:00 PM on Sunday, then sought to synchronize again at 1:00 PM on Monday, only the data elements that were modified during the intervening time period would be synchronized. For example, if the user's only change to the data between the synchronization operations was to create a new contact on his PDA, only the new contact would be synchronized with the desktop computer.
Unfortunately, as advanced as synchronization technology has become, many disadvantages remain. One such disadvantage is the re-transmission or round-tripping of data elements. Specifically, as currently practiced, each synchronization session has two anchors, namely, a “last” anchor and a “next” anchor. The last anchor is typically the time at which the previous synchronization was initialized (e.g., 1:00 PM Sunday), while the next anchor is typically the time at which the current synchronization was initialized (e.g., 1:00 PM Monday). When a modified data element is received from another device, a device modification timestamp (DMT) for the receiving device is set. The DMT represents the time at which the data element is actually updated on the receiving device (e.g. 1:00 PM Monday). As such, the DMT is some amount of time after the next anchor for the current synchronization session. Accordingly, if a subsequent synchronization was performed on 1:00 PM Tuesday, it would appear that the data element had been modified on the receiving device since the last synchronization. This would result in the same data element being routed back to the original device even though no subsequent modification had actually occurred (i.e., round-tripping).
In view of the foregoing, there exists a need for a method, system and program product for synchronizing data elements between devices. Specifically, a need exists for a system for synchronizing data elements between devices without resulting in data element re-transmission (round-tripping).